function rule1(num) {
    if ((num % 15 == 0 || num == 0) && num != 1) {
        return true
    } else {
        return false
    }
}
// 右边边界
function rule2(num) {
    if ((num + 1) % 15 == 0 && num != 1) {
        return true
    } else {
        return false
    }
}
// 判断左右走向
function directionFun1(array, index) {
    var n = 1;  //为左右走向相同的棋子
    var totalJ = 0
    if (!rule1(index)) {
        for (let j = 1; j <= 4; j++) {
            if (array[index] == array[index - j]) {
                n = j + 1;
                if (n >= 5) {
                    return array[index]
                }

            } else {
                break
            }
            if (rule1(index - j)) {
                if (j >= 4) {
                    return array[index]
                } else {
                    return false
                }
            }
        }
    }
    if (!rule2(index)) {
        for (let i = 1; i <= 4; i++) {
            if (array[index] == array[i + index]) {
                totalJ = i;
                if (totalJ >= 4) {
                    return array[index]
                }
            } else {
                break;
            }
            if (rule2(index + i)) {
                if (i >= 4) {
                    return array[index]
                } else {
                    return false
                }
            }

        }
    }


    n += totalJ;
    // console.log(n,'n')
    if (n >= 5) {
        return array[index]
    }
    return false
}
// 判断上下走向
function directionFun2(array, index) {
    var n = 1;  //判断左右走向
    var totalJ = 0
    for (let j = 1; j <= 4; j++) {
        if (array[index] == array[index - j * 15]) {
            n = j + 1;
            if (n >= 5) {
                return array[index]
            }
        } else {
            break
        }
    }
    for (let i = 1; i <= 4; i++) {
        if (array[index] == array[index + i * 15]) {
            totalJ = i;
            if (totalJ == 4) {
                return array[index]
            }
        } else {
            break
        }
        
    }
    n += totalJ;
    // console.log(n,'n')
    if (n >= 5) {
        return array[index]
    }
    return false
}
// 判断斜右走向
function directionFun3(array, index) {
    var n = 1;  //为左右走向相同的棋子
    var totalJ = 0

    if (!rule1(index)) {
        for (let j = 1; j <= 4; j++) {
            if (array[index] == array[index-j*16]) {
                n = j + 1;
                if (n >= 5) {
                    return array[index]
                }

            } else {
                break
            }
            if (rule1(index - j*16)) {
                if (j >= 4) {
                    return array[index]
                } else {
                    return false
                }
            }
        }
    }
    if (!rule2(index)) {
        for (let i = 1; i <= 4; i++) {
            if (array[index] == array[index+i*16]) {
                totalJ = i;
                if (totalJ >= 4) {
                    return array[index]
                }
            } else {
                break;
            }
            if (rule2(index + i*16)) {
                if (i >= 4) {
                    return array[index]
                } else {
                    return false
                }
            }

        }
    }


    n += totalJ;
    // console.log(n,'n')
    if (n >= 5) {
        return array[index]
    }
    return false
}
// 判断斜左走向
function directionFun4(array, index) {
    var n = 1;  //为左右走向相同的棋子
    var totalJ = 0
    if(index==0 || index==224) return false

    if (!rule2(index)) {
        for (let j = 1; j <= 4; j++) {
            if (array[index] == array[index-j*14]) {
                n = j + 1;
                if (n >= 5) {
                    return array[index]
                }
                if (rule2(index - j*14)) {
                    break;
                }

            } else {
                break
            }   
        }
    }
    if (!rule1(index)) {
        for (let i = 1; i <= 4; i++) {
            if (array[index] == array[index+i*14]) {
                totalJ = i;
                if (totalJ >= 4) {
                    return array[index]
                }
                if (rule1(index +i*14)) {
                    break;
                }
            } else {
                break;
            }
            if (rule1(index + i*14)) {
                if (i >= 4) {
                    return array[index]
                } else {
                    return false
                }
            }

        }
    }


    n += totalJ;
    // console.log(n,'n')
    if (n >= 5) {
        return array[index]
    }
    return false
}
function ruleWin(array, index) {
    // 左边界限规则
    // 判断左右走向
    if (directionFun1(array, index)) return directionFun1(array, index)
    
    //设置上下走向相同的棋子
    if (directionFun2(array, index)) return directionFun2(array, index)

    //设置斜又走向相同的棋子
    if (directionFun3(array, index)) return directionFun3(array, index)

    //设置斜左走向相同的棋子
    if (directionFun4(array, index)) return directionFun4(array, index)
   
    return false

}
module.exports ={ruleWin}